package com.myh.config;

import com.myh.pojo.File;
import com.myh.service.FileService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * @author 莫耀华
 * @date 2020-08-24 18:05
 * 定时任务  删除7天以上的文件
 */
@Configuration      //1.主要用于标记配置类，兼备Component的效果。
@EnableScheduling   // 2.开启定时任务
public class SaticScheduleTaskDeleteFile {
    @Autowired
    private FileService fileService;
    private final Logger logger= LoggerFactory.getLogger(this.getClass());
    //3.添加定时任务
    @Scheduled(cron = "0 0 12 * * ?")
    //或直接指定时间间隔，例如：5秒
    //@Scheduled(fixedRate=5000)
    private void configureTasks() {
        /**
         * 判断数据的文件时长是否大于三天  大于就删除
         */
        try {
            logger.info("=======================================================================");
            logger.info("开启定时定时任务每天12点开始，当前时间为"+new Date().toLocaleString());
            List<Integer> ids = fileService.findIdsMoreThanThe();
            ids.forEach(id->{
                File byFid = fileService.findByFid(id);
                if(byFid!=null){
                    logger.info("删除文件"+byFid.getOldFileName()+" 时间"+byFid.getUploadTime());
                    fileService.deleteByFid(id);
                    logger.info("删除成功");
                }else{
                    logger.info("删除失败"+" 文件id"+id);
                }
            });
            logger.info("结束定时定时任务，当前时间为"+new Date().toLocaleString());
            logger.info("=======================================================================");
        }catch (Exception e){
            logger.error(e.getMessage());
        }

    }
}
